Use case: encryption/decryption in interrupt mode

Sequence diagram

Encryption/decryption in interrupt mode

  @startuml

  participant "Application" as App
  participant "CRYP" as CRYP

  note over App,CRYP: Encryption
  App -> CRYP: HAL_CRYP_Encrypt_IT()

  group opt
  note over App,CRYP: Tag generation
  App -> CRYP: HAL_CRYPEx_AESGCM_GenerateAuthTAG()
  note right: **Only for GCM algorithm**
  App -> CRYP: HAL_CRYPEx_AESCCM_GenerateAuthTAG()
  note right: **Only for CCM algorithm**
  end group

  note over App,CRYP: Decryption
  App -> CRYP: HAL_CRYP_Decrypt_IT()

  group opt
  note over App,CRYP: Tag generation
  App -> CRYP: HAL_CRYPEx_AESGCM_GenerateAuthTAG()
  note right: **Only for GCM algorithm**
  App -> CRYP: HAL_CRYPEx_AESCCM_GenerateAuthTAG()
  note right: **Only for CCM algorithm**
  end group

  @enduml

Code snippet

HAL1

HAL2

/* Encryption */
HAL_CRYP_Encrypt_IT(&hcryp, Plaintext, PLAINTEXT_SIZE,
                 EncryptedText);

/* Only for GCM algorithm */
HAL_CRYPEx_AESGCM_GenerateAuthTAG(&hcryp,TAG,
                                TIMEOUT_VALUE);

/* Only for CCM algorithm */
HAL_CRYPEx_AESCCM_GenerateAuthTAG(&hcryp,TAG,
                                TIMEOUT_VALUE);

/* Decryption */
HAL_CRYP_Decrypt_IT(&hcryp,Ciphertext , PLAINTEXT_SIZE,
                 DecryptedText);

/* Only for GCM algorithm */
HAL_CRYPEx_AESGCM_GenerateAuthTAG(&hcryp,TAG,
                                TIMEOUT_VALUE);

/* Only for CCM algorithm */
HAL_CRYPEx_AESCCM_GenerateAuthTAG(&hcryp,TAG,
                                TIMEOUT_VALUE);
/* Encryption */
HAL_AES_Encrypt_IT(&haes, Plaintext, PLAINTEXT_SIZE,
                               EncryptedText);

/* Only for GCM algorithm */
HAL_AES_GCM_GenerateAuthTAG(&haes,TAG,
                              TIMEOUT_VALUE);

/* Only for CCM algorithm */
HAL_AES_CCM_GenerateAuthTAG(&haes,TAG,
                             TIMEOUT_VALUE);

/* Decryption */
HAL_AES_Decrypt_IT(&haes, Ciphertext, PLAINTEXT_SIZE,
                                        DecryptedText);

/* Only for GCM algorithm */
HAL_AES_GCM_GenerateAuthTAG(&haes,TAG,
                              TIMEOUT_VALUE);

/* Only for CCM algorithm */
HAL_AES_CCM_GenerateAuthTAG(&haes,TAG,
                             TIMEOUT_VALUE);

Key changes

  1. Interrupt-mode APIs are renamed from HAL_CRYP_*_IT to HAL_AES_*_IT.

  2. Tag generation APIs are renamed to HAL_AES_GCM_GenerateAuthTAG() and HAL_AES_CCM_GenerateAuthTAG().